package com.macrohard.common.base.response;

import java.util.HashMap;

/**
 * controller公共结果集
 */
public class R extends HashMap<String, Object> {
	public R() {
		put("code", 200);
		put("message", "success");
	}

	/**
	 * 错误信息结果集
	 * @param code 状态码
	 * @param msg 错误信息
	 * @return 结果集
	 */
	public static R error(int code, String msg) {
		R r = new R();
		r.put("code", code);
		r.put("message", msg);
		return r;
	}

	/**
	 * 错误信息结果集
	 * @param msg 错误信息
	 * @return 结果集
	 */
	public static R error(String msg) {
		return error(500, msg);
	}

	/**
	 * 成功信息结果集
	 * @return 结果集
	 */
	public static R ok() {
		return new R();
	}

	/**
	 * 成功信息结果集
	 * @param msg 成功信息
	 * @return 结果集
	 */
	public static R ok(String msg) {
		R r = new R();
		r.put("message", msg);
		return r;
	}

	/**
	 * 成功信息结果集
	 * @param msg 成功信息
	 * @param data 返回数据
	 * @return 结果集
	 */
	public static R ok(String msg, Object data) {
		R r = new R();
		r.put("message", msg);
		r.put("data", data);
		return r;
	}

	/**
	 * 影响信息结果集
	 * @param effect 操作是否成功
	 * @return 结果集
	 */
	public static R wrapEffectResult(boolean effect) {
		if (effect) {
			return ok();
		} else {
			return error("failure");
		}
	}

	/**
	 * 影响信息结果集
	 * @param effect 操作影响的数据库数据条数
	 * @return 结果集
	 */
	public static R wrapEffectResult(long effect) {
		return ok("操作影响的记录为" + effect + "条");
	}

	/**
	 * 添加键值对
	 * @param key 键名
	 * @param value 键值
	 * @return 结果集本身
	 */
	public R put(String key, Object value) {
		super.put(key, value);
		return this;
	}
}


